In a cloud computing environment, typically using the smallest set of resources needed for satisfying the current load is desirable. When this set needs to be expanded to accommodate additional load offered, addressing the overload condition on specific virtual machines within this set of resources may be necessary. A big challenge in addressing this condition is to reduce the burden of an overloaded virtual machine by transferring load to another virtual machine without adversely impacting any ongoing sessions.
Virtualization of a computing infrastructure such as that used for offering telephone communications services involves offering such services over a cloud computing environment. Those skilled in the art know cloud computing as a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Virtualization may include the use of physical machines, servers and virtual machines. A physical machine or a server is a physical entity. A virtual machine is a pure software entity. A single physical machine may host multiple virtual machines. The term “server” may refer to either a physical machine or a virtual machine, based on context.
Implementation of services within a cloud computing environment offers significant advantages in terms of quick loading of infrastructure cost to a cloud provider, rapid time to ramp up, seamless scaling, sharing of the infrastructure by multiple service providers, and global reach. Efficient implementations of cloud based services should scale to the limits of the cloud infrastructure and must be elastic in that the resources used by a service expand and contract according to the load offered. However, there have been some challenges regarding effectively providing overload control in a cloud computing environment.